//
//  Heap.h
//  堆的实现
//
//  Created by 卜绎皓 on 2022/7/14.
//

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
 
//创建堆结构
typedef int HPDataType; //堆中存储数据的类型
typedef struct Heap
{
    HPDataType* a; //用于存储数据
    size_t size; //记录堆中有效元素个数
    size_t capacity; //记录堆的容量
}HP;
 
//初始化堆
void HeapInit(HP* php);
//堆的销毁
void HeapDestroy(HP* php);
//堆的打印
void HeapPrint(HP* php);

//交换
void Swap(HPDataType* pa, HPDataType* pb);
//堆的插入
void HeapPush(HP* php, HPDataType x);
//堆的删除  删除堆顶的数据
void HeapPop(HP* php);
 
//堆的判空
bool HeapEmpty(HP* php);
//堆的元素个数
size_t HeapSize(HP* php);
//获取堆顶元素
HPDataType HeapTop(HP* php);
//堆排序
void HeapSort(int*a,int n);
